This analysis explores a dataset containing information on new
private cars licensed for the first time in 2024 and 2025 in
Ireland.
The aim of the project is to examine the newcar dataset to
visually investigate how factors such as fuel type, car brand, and
seasonal patterns shape the Irish new car market.
By constructing a series of graphs and analyzing trends in new car registrations it’s possible to achieve valuable insights into consumer behaviour, market demand, and shifts in vehicle preferences over time.
The newcar dataset provides details on newly registered
private cars such as fuel type, make and model, and the number of
vehicles licensed.
To investigate the trends present in this data, the focus is on the following main question: how have new car registrations in Ireland changed over time, and what trends are evident in fuel type, car brand, and seasonal patterns?
To address this, the focus is on four sub-questions:
Which fuel types are most frequently found in brand-new vehicles?
Which car brands are the most popular and does this vary by month?
How do new car registrations vary by month across the years in the dataset?
Are there any recurring seasonal trends in new car registrations and do they vary by fuel type and year?
Together, these questions guide the analysis and each one will have a graph to draw justified conclusions from the trends.
Before conducting any sort of analysis to construct plots for the
data, the dataset had to be converted from a wide format, where each
month had its own column, into a tidy long format.
This helped reduce more than twenty separate month columns down to a
single column of values, making the data much easier to work with.
Using pivot_longer(), all monthly columns were combined
into a single Year and a single Month variable
with a corresponding count column, simplifying the dataset.
This step is essential because year and month represent different types
of information that we need to analyse independently.
The Year variable was then converted to numeric type using
'as.integer'; this is a crucial part of tidying our data
because it converts corresponding data types to be numeric once in a
numeric setting.
To adapt the dataset for seasonal analysis, months were grouped into
seasons using a mutate() function.
Since the available data covered only 2024 and the first nine months of
2025, it was not possible to use meteorological seasons (for example
December–February for winter) as this would have resulted in seasons
with only one or two months of observations.
For this reason, a simplified approach was adopted by grouping months
into trimesters corresponding to conventional calendar quarters (for
example January–March as “winter”).
## General dataset adjustments:
newcar_yearmonth <- newcar |>
# converting dataset into a longer version
pivot_longer(
cols = 4:ncol(newcar),
names_to = "month_year",
values_to = "newcar",
values_drop_na = TRUE
) |>
separate(month_year, into = c("year", "month"), sep = " ") |>
mutate(year = as.integer(year))
## (1) Data adjustments for the first plot: Total count by fuel type
month_cols <- grep("2024|2025", names(newcar), value = TRUE)
# calculating total registration per row
newcar2 <- newcar |>
mutate(Total = rowSums(across(all_of(month_cols)), na.rm = TRUE))
# aggregating by fuel type
fuel_counts <- newcar2 |>
group_by(Type.of.Fuel) |>
summarise(Count = sum(Total)) |>
filter(Type.of.Fuel != "All fuel types") |>
arrange(desc(Count))
## (2) Data adjustments for the second plot: Top five brands monthly trend
newcar_long1 <- newcar_yearmonth |>
mutate(
registrations = newcar,
month_date = as.Date(
paste(year, match(month, month.name), 1, sep = "-")),
brand = word(Make.and.Model, 1))
month_seq <- seq(as.Date("2024-01-01"), as.Date("2025-09-01"), by = "month")
# total registrations by brand
brand_totals <- newcar_long1 |>
group_by(brand) |>
summarise(total_registrations = sum(registrations, na.rm = TRUE),
.groups = "drop") |>
arrange(desc(total_registrations))
# selecting the top 5 brands
top5 <- brand_totals |>
filter(brand != "All") |> # excluding the "All" brands total
slice_max(total_registrations, n = 5) |>
pull(brand)
# calculating monthly totals for the top 5 brands
top5_monthly <- newcar_long1 |>
filter(brand %in% top5) |>
group_by(month_date, brand) |>
summarise(total = sum(registrations, na.rm = TRUE), .groups = "drop") |>
# filling missing months with zeros
complete(brand, month_date = month_seq, fill = list(total = 0)) |>
arrange(brand, month_date)
## (3) Data adjustments for the third plot: Monthly totals for new cars
newcar_tidy <- newcar_yearmonth |>
filter(Statistic == "New Private Cars Licensed for the First Time") |>
mutate(
Year = year,
Month = factor(month, levels = month.name),
Count = newcar
) |>
select(Year, Month, Count) |>
filter(!is.na(Count), Count > 0) # removing zeros and missing values
## (4) Data adjustments for the fourth plot: Seasonal totals by fuel type
newcar_trimesters <- newcar_yearmonth |>
filter(newcar > 0) |> # remove zero values
select(month, year, newcar, Type.of.Fuel) |> # selecting the needed columns
filter(`Type.of.Fuel` != "All fuel types") |>
# changing the variable name to be fully seen on the plot
mutate(Type.of.Fuel = recode(
Type.of.Fuel,
"Petrol or Diesel plug-in hybrid electric" =
"P or D plug-in hybrid electric")) |>
# assigning each month to a season
mutate(
trimester = case_when(
month %in% c("January", "February", "March") ~ "Winter",
month %in% c("April", "May", "June") ~ "Spring",
month %in% c("July", "August", "September") ~ "Summer",
month %in% c("October", "November", "December") ~ "Autumn"
),
season = factor(trimester, levels = c("Winter","Spring","Summer","Autumn"))
) |>
# aggregating by season and fuel type
group_by(year, season, Type.of.Fuel) |>
summarise(total_newcar = sum(newcar, na.rm = TRUE), .groups = "drop") As I begin exploring the dataset, the first visualisation naturally leads us to an examination of how fuel types shape the Irish new car market.
# Fuel type barplot
ggplot(fuel_counts, aes(x = reorder(Type.of.Fuel, Count),
y = Count,
fill = Type.of.Fuel)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = scales::comma(Count)),
hjust = -0.2,
size = 3) +
coord_flip() +
theme_minimal() +
scale_y_continuous(
labels = scales::comma,
expand = expansion(mult = c(0, 0.15))) +
scale_fill_viridis(discrete = TRUE, option = "C") +
labs(
x = "Fuel Type",
y = "Number of new car registrations")Figure 1: Total new car registrations in Ireland from January 2024 to September 2025, by fuel type. Petrol is the most common fuel, followed by petrol–electric hybrids, diesel, and fully electric vehicles.Colors indicate fuel categories.
The bar chart above displays the total number of registrations of
brand-new vehicles between January 2024 to September 2025.
Each bar shows the cumulative count of vehicles for a specific fuel
category, making it easy to compare the popularity of different fuel
types.
The results immediately reveal the strong presence of traditional
choices: petrol vehicles clearly dominate, followed by petrol–electric
hybrids and diesel. Fully electric cars also appear in significant
numbers, though still far behind petrol.
Meanwhile, plug-in hybrids and diesel–electric hybrids play a much
smaller role, and the “Other fuel types” category records a
count of zero, showing that no vehicles in the dataset were registered
under this classification during the time period.
This first glance already shows that hybrids and electric cars are
emerging, but petrol continues to set the pace.
Moving from fuel to brand, the next graph traces monthly registrations for the five most popular brands from early 2024 to late 2025 (Hyundai, Kia, Skoda, Toyota and Volkswagen).
# Car brands plot
p = ggplot(top5_monthly, aes(x = month_date, y = total, color = brand)) +
geom_line() +
geom_point() +
scale_color_viridis_d(option = "D") +
scale_x_date(date_breaks = "1 month",
date_labels = "%b %Y",
limits = c(min(month_seq),
max(month_seq))) +
theme_minimal() +
labs(x = "Month",
y = "Number of new car registrations",
color = "Brand") +
theme(
axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
legend.title = element_blank())
ggplotly(p)Figure 2: Monthly car registrations in Ireland from early 2024 to late 2025, by brand. The plot shows data for Hyundai, Kia, Skoda, Toyota, and Volkswagen. Colors indicate brands. Sharp peaks occur in January and July of both years, Toyota consistently records the highest registrations during peak months.
A clear seasonal pattern emerges: all brands experience sharp
increases in registrations during January and July of both years,
reflecting the biannual new car registration periods in Ireland (241/242
in 2024 and 251/252 in 2025) when consumers rush to purchase new
vehicles.
Among the brands, Toyota consistently records the highest peaks,
particularly in January of both years, indicating strong market
dominance during key registration months. Skoda and Hyundai also display
pronounced spikes, while Kia and Volkswagen show more moderate
growth.
Outside the major registration periods, monthly registrations drop
significantly across all brands, highlighting the strong influence of
seasonal purchasing behaviour.
Overall, the graph shows that Toyota remains the leading brand during
peak months, and that car demand is heavily concentrated around the
biannual registration cycles.
When we compare registrations month by month across 2024 and 2025, this seasonal rhythm becomes even more evident.
# Monthly count barplot
ggplot(newcar_tidy,
aes(x = Month,
weight = Count,
fill = factor(Year))) +
geom_bar(position = "dodge") +
scale_fill_manual(
values = c(
"2024" = "#0072B2",
"2025" = "#CC79A7"), name = "Year") +
theme_minimal() +
xlab("Month") +
ylab("Number of new car registrations") +
theme(
axis.text.x = element_text(hjust = 1),
panel.grid.minor = element_blank() ) +
coord_flip()Figure 3: Monthly new private car registrations in Ireland by year (2024 vs 2025). The total number of new private vehicle registrations for each month in 2024 (purple) and 2025 (blue) is displayed in the bar chart, which compares the two years side by side. Registrations in 2025 are slightly lower than in 2024, indicating a minor overall decline. Data for the last three months of 2025 are not available.
The bar chart pairing the bars for the two years shows month by month
fluctuations from year to year.
The data shows that registrations are very seasonal, confirming January
and July as the high points, with the remaining months showing far lower
numbers.
At first glance, 2024 seems to have a higher number of car
registrations than 2025, however, we must consider that the 2025 data
only runs to September, leaving the final three months missing.
With this visible gap, we aren’t able to claim a full year decline and
any apparent decline must be interpreted with caution. Based on the
available data, 2024 still appears to have higher registration numbers
overall, but the absence of the last three months prevents us from
drawing long-term conclusions.
Finally, examining how fuel types vary across the seasons further clarifies the patterns observed in the previous graphs.
# Number of cars per season and fuel type barplot
ggplot(newcar_trimesters, aes(x = season, y = total_newcar, fill = factor(year))) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(newcar_trimesters$Type.of.Fuel) +
theme_minimal() +
labs(
x = "Season",
y = "Number of new car registrations",
fill = "Year")Figure 4: Number of new cars registrations in Ireland in 2024 and 2025, by season and fuel type. Seasons are grouped as follows: Winter (Jan–Mar), Spring (Apr–Jun), Summer (Jul–Sep), and Autumn (Oct–Dec). Red bars represent 2024 and blue bars represent 2025. Most new cars are sold during the winter months, while autumn shows the lowest sales. No data are available for Winter 2025. Among fuel types, petrol vehicles account for the highest number of new registrations, while diesel and electric hybrid models show the lowest sales. P and D meaning petrol and diesel, respectively. Data for autumn 2025 are not available.
The highest number of cars are consistently sold in the winter months
(January–March), followed by another peak during the summer period
(July–September). In contrast, spring (April–June) shows noticeably
lower sales, and autumn (October–December) represents the weakest
quarter of the year.
This trend is visible across all fuel types in the individual panels of
the plot. The visualization also highlights a shift in consumer
preferences: new car sales are increasingly transitioning from
traditional petrol and diesel vehicles toward electric and hybrid
models. In particular, a growth in sales of fully electric and plug-in
hybrid vehicles is evident in 2025, while both petrol and diesel cars
show a decline compared with the previous year.
At the same time, diesel and electric-hybrid models remain the least
sold fuel types overall, with noticeable differences between 2024 and
2025 that vary by season: some seasons show higher registrations in
2024, while others show a slight increase in 2025, indicating that their
demand fluctuates more with seasonal factors than with market
trends.
Through the analysis of the newcar dataset from the CSO,
many insights into consumer behaviour and market dynamics in Ireland
emerged.
Seasonal trends appear across all visualizations, with spikes in months
like January when registrations are consistently at their highest.
Yearly comparisons also suggest that 2024 recorded slightly higher
totals than the partially available 2025 data.
Registrations are highest in the winter months (January–March), and
petrol cars remain the most common overall, however, an important shift
between 2024 and 2025 becomes evident: the data shows a gradual move
toward hybrid and fully electric vehicles, signalling the early stages
of an ecological transition within the Irish car market.
Although these low-emission vehicles are not yet the dominant choice,
their increasing presence reflects growing environmental awareness,
changing consumer preferences and supportive policies favoring greener
technologies.
Overall, the visual and statistical evidence presents a clear picture of the Irish new car market shaped by seasonal cycles, evolving fuel preferences, and distinct differences across brands.
These insights provide a clear visual and statistical summary of current consumer patterns and of a sector slowly moving toward a more sustainable future.